const fs = require('fs')
const path = require('path')
const basePath = path.resolve(__dirname, '../logs')
const accsPath = basePath + '/consoleLog/'
const moment = require('moment')
// const { dateRegExp } = require('../lib/date')
/**
 * 确定目录是否存在，如果不存在则创建目录
 */
const confirmPath = (pathStr) => {
    if (!fs.existsSync(pathStr)) {
        fs.mkdirSync(pathStr)
        // console.log('createPath: ' + pathStr);
    }
}

//创建log的根目录'logs'
if (basePath) {
    confirmPath(basePath)
    //根据不同的logType创建不同的文件目录
    confirmPath(accsPath)
}
const logDebug = function () {
    // 一天一个日志
    // let now = dateRegExp(new Date().getTime(), 'yyyy-MM-dd')
    let now = moment().format('YYYY-MM-DD')
    // // 获取传过来的所有参数
    // let data = arguments
    let fileName = accsPath + now + '.log'
    // 判断是否存在当前的日志文件
    /* node10.x fs.exists() 已废弃，但 fs.existsSync() 不是废弃的。 fs.exists() 的 callback 参数接受与其他 Node.js 回调不一致的参数。 fs.existsSync() 不使用回调。 */
    fs.exists(fileName, async (exists) => {
        if (!exists) {
            // // 不存在文件，就创建一个新文件
            // fs.writeFile(fileName, (err) => {
            //     if (err) {
            //         return console.error(err)
            //     }
            // })
        };
        // // 读取文件大小，如果文件过大。创建一个新文件
        // fs.stat(fileName, function(err, stats) {
        //     if (err) {
        //         return console.error(err);
        //     }
        //     // 10 等于 10MB
        //     let size = 1024;
        //     if (stats.size >= size) {
        //         let nums = [];
        //         // 读取文件下的所有文件
        //         fs.readdir(accsPath, as function(err, files) {
                    
        //             let num = files.length ? files.length : 0;
        //             // 修改原文件名称，然后创建一个的新文件
        //             fs.rename(fileName, fileName + '.' + (num + 1), err => err)
        //             await fs.writeFile(fileName, function(err) {
        //                 if (err) {
        //                     return console.error(err);
        //                 }
        //             });
        //             //遍历读取到的文件列表
        //             files.forEach(function(filename) {
        //                 //获取当前文件的绝对路径
        //                 let filedir = path.join(accsPath, filename);

        //                 // let num = filename.length ? filename.length : 0;
        //                 // // 修改原文件名称，然后创建一个的新文件
        //                 // fs.rename(fileName, fileName + '.' + (num + 1), err => err)
        //                 // fs.writeFile(fileName, function(err) {
        //                 //     if (err) {
        //                 //         return console.error(err);

        //                 //     }

        //                     //根据文件路径获取文件信息，返回一个fs.Stats对象
        //                     // fs.stat(filedir, function(eror, stats1) {
        //                     //     if (eror) {
        //                     //         console.warn('获取文件stats失败');
        //                     //     } else {
        //                     //         let isFile = stats1.isFile();//是文件
        //                     //         let isDir = stats1.isDirectory();//是文件夹
        //                     //         if (isFile) {
        //                     //             if ((filename.slice(-1)-0) === 'number') {
        //                     //                 nums.push(filename.slice(-1))
        //                     //             }
        //                     //             // console.log(filedir);　　　　// 读取文件内容
        //                     //             // var content = fs.readFileSync(filedir, 'utf-8');
        //                     //             // console.log(content);

        //                     //         }
        //                     //         if (isDir) {
        //                     //             // fileDisplay(filedir);//递归，如果是文件夹，就继续遍历该文件夹下面的文件
        //                     //         }
        //                     //     }
        //                     // })
        //                 // });
        //             })

        //         });
        //     }
        // });
        // 添加日志内容
        await formatConsoleLog(arguments)
            .then(res => {
                fs.appendFile(accsPath + now + '.log', res, 'utf-8', (err) => {
                    if (err) throw err
                })
        })
    })

}


//格式化请求日志
const formatConsoleLog = async (data) => {
    return new Promise((resolve, reject) => {
        // // 响应开始时间
        // const start = new Date()
        let logText = new String()
        // 日志时间
        // logText += '\n' + '[' + dateRegExp(new Date().getTime(), 'yyyy-MM-dd hh:mm:ss') + '] [debug] ' + '\n';
        logText += '\n' + '[' + moment().format('YYYY-MM-DD HH:mm:ss') + '] [debug] ' + '\n'
        // 响应日志开始
        logText += '*************** start ***************' + '\n'
        // 打印路径
        logText += 'console path: ' + data[0] + '\n'
        // 循环打印数据
        let arr = data
        let str = ''
        for (let i = 1; i < arr.length; i++) {
            if (i) {
                str += JSON.stringify(arr[i]) + ','
            }
        }
        logText += 'console body: ' + str + '\n'  // 每条最多的五百个字节
        // 响应日志结束
        logText += '*************** end ***************' + '\n'
        // return logText;
        resolve(logText)
    })

}

module.exports = logDebug